package com.situ.JDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;

// 工具类
// 工具类里绝大多数都是静态的方法
// 这样就可以直接使用工具类调用想要的方法就可以了
// 加上final，这个类不能被继承
// 构造方法私有化，这样这个类不能被实例化，只能通过(.)的方式来调用
public final class JDBCUtil { // DBTool

	private JDBCUtil() {
	}

	// 从属性配置文件中读取属性值/work1130/src/jdbc.properties
	private static ResourceBundle rb = ResourceBundle.getBundle("jdbc");
	private static String driver = rb.getString("driver");
	private static String url = rb.getString("url");
	private static String user = rb.getString("user");
	private static String pass = rb.getString("pass");

	// 执行一次就可以  so 使用静态代码块
	static {
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	public static Connection getConnection1() throws SQLException {
		return DriverManager.getConnection(url, user, pass);
	}


	// try catch 写法
	public static Connection getConnection() {
		try {
			return DriverManager.getConnection(url, user, pass);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}

	// 方法重载
	// DML不需要使用结果集
	public static void close(Connection conn, Statement st) {
		close(conn, st, null);
	}

	// 可以用来给DQL关闭
	public static void close(Connection conn, Statement st, ResultSet rs) {
		try {
			if (conn != null) {
				conn.close();
				conn = null;
			}
			if (st != null) {
				st.close();
				st = null;
			}
			if (rs != null) {
				rs.close();
				rs = null;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	// 调试
	public static void main(String[] args) throws SQLException {
		Connection conn = JDBCUtil.getConnection();
		System.out.println(conn);
	}
}
